import { UserRoleEnum } from "@/enums";

/**
 * 检查权限（判断当前登录用户是否具有某个权限）
 * @param loginUser 当前登录用户
 * @param needAuth 需要有的权限
 * @return boolean 有无权限
 */
export default function authCheck (
  loginUser: API.LoginUserVO,
  needAuth: UserRoleEnum = UserRoleEnum.NOT_LOGIN
) {
  // 如果不需要权限, 直接返回 true
  if (needAuth === UserRoleEnum.NOT_LOGIN) {
    return true;
  }

  // 获取当前登录用户具有的权限 (此处对鱼皮项目修改: 未登录也有一个 userRole = ACCESS_ENUM.NOT_LOGIN)
  const loginUserAccess = loginUser.userRole ?? UserRoleEnum.NOT_LOGIN;

  // 如果用户要登录才能访问
  if (needAuth === UserRoleEnum.USER) {
    // 如果用户没登录，那么表示无权限
    if (loginUserAccess === UserRoleEnum.NOT_LOGIN) {
      return false;
    }
  }

  // 如果用户要登录, 且必须是管理员才能访问
  if (needAuth === UserRoleEnum.ADMIN) {
    // 如果不是管理员，表示无权限
    if (loginUserAccess !== UserRoleEnum.ADMIN) {
      return false;
    }
  }

  return true;
};